import axios from "axios";

// 从环境变量读取后端地址（.env.* 中定义），未配置时使用默认地址
const VITE_XHY_BASE = (import.meta as any).env?.VITE_XHY_BASE as string | undefined
const VITE_API_BASE = (import.meta as any).env?.VITE_API_BASE as string | undefined
const VITE_IMES_BASE = (import.meta as any).env?.VITE_IMES_BASE as string | undefined

// 创建axios实例（XHY网关）
const MES_XHY_ApiHost = axios.create({
  baseURL: VITE_XHY_BASE || 'http://123.57.80.82:8110',
  timeout: 15000 // 超时时间，可根据需要调整
})

// 创建axios实例（本项目后端 .NET API）
const MES_workbenchApi = axios.create({
  baseURL: VITE_API_BASE || 'http://123.57.80.82:8211',
  timeout: 15000 // 超时时间，可根据需要调整
})

// 创建axios实例（iMES 后端 API）
const MES_imesApi = axios.create({
  baseURL: VITE_IMES_BASE || 'http://123.57.80.82:5130',
  timeout: 15000
})


// 添加请求拦截器
MES_XHY_ApiHost.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config;

}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
MES_XHY_ApiHost.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  if (error.response?.status === 401) {
    // token过期或无效，清除本地存储并跳转到登录页
    localStorage.removeItem('user')
    localStorage.removeItem('isLoggedIn')
    localStorage.removeItem('token')
    window.location.href = '/'
  }
  return Promise.reject(error);
});


// 添加请求拦截器
MES_workbenchApi.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config;

}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
MES_workbenchApi.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  if (error.response?.status === 401) {
    // token过期或无效，清除本地存储并跳转到登录页
    localStorage.removeItem('user')
    localStorage.removeItem('isLoggedIn')
    localStorage.removeItem('token')
    window.location.href = '/'
  }
  return Promise.reject(error);
});

// iMES 请求/响应拦截
MES_imesApi.interceptors.request.use(function (config) {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, function (error) {
  return Promise.reject(error)
});

MES_imesApi.interceptors.response.use(function (response) {
  return response
}, function (error) {
  if (error.response?.status === 401) {
    localStorage.removeItem('user')
    localStorage.removeItem('isLoggedIn')
    localStorage.removeItem('token')
    window.location.href = '/'
  }
  return Promise.reject(error)
});

export { MES_XHY_ApiHost, MES_workbenchApi, MES_imesApi }